iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
AI/ ML & Data

從點子構想到部署上線:機器學習專案的一生系列 第 6

[Day 6] ML Project Lifecycle 介紹 - Step 3. 建立模型(Build the Model)

  • 分享至 

  • xImage
  •  

今天我們進入 ML 專案的第三個步驟——建立模型(Build the Model)。


為了訓練出一個可以實際部署上線並解決商業需求的模型,機器學習專案往往會經歷一個反覆迭代的過程,包括以下步驟

1. 蒐集資料

獲得初步數據集,如同我們在 [Day 5] Step 2. 蒐集和準備資料(Collect and Prepare Data) 介紹的,需要確保數據具有代表性,並且能夠解決目標問題。

2. 選擇並訓練模型

一旦數據準備完畢,接下來的步驟是選擇適合的模型並開始訓練。而在訓練之前,通常會建立一個 baseline model 來作為參考,以助於評估新模型的性能。

什麼是 baseline model?要怎麼建立呢?

建立 baseline model 的方法

  • 人類水準表現(Human-Level Performance):人類善於判讀非結構化資料,例如進行圖片、聲音和文本的分類任務,因此可以將人類的表現作為基準,希望模型能夠表現的跟人類一樣好。
  • 當前最先進的技術(State of the Art, SOTA):根據目前學界和業界中最先進的技術表現當作 baseline。
  • 當前舊有系統的表現:如果已經有現成在運作的系統,可以以他為基準,以評估模型的改進空間。
  • 快速簡易的模型:先做一個能夠快速實現的的小型 POC,用以評估數據特徵的有效性和模型可行性。

根據資料種類而有不同選擇

  • 非結構化資料(Unstructured Data):圖片、聲音、文本等非結構化數據,因為人類處理這些資料的能力很強,因此可以參考人類的判斷作為 baseline。
  • 結構化資料(Structured Data):如同在 [Day 5] 介紹的,表格數據通常比較難由人類直接進行判斷,因此可依賴其他模型作為 baseline,例如過去的簡單模型或現有系統的表現。

模型開發的起步技巧

要如何開始一個模型訓練呢?Andrew Ng 給了幾個起步的建議:

  • 文獻調查(Literature Search):不一定要尋找最新的技術,應該聚焦於最適合現實場景的技術。
  • 尋找開源專案(Open-Source Implementations):如果有開源工具可用,應考慮使用它們來加速模型開發。
  • 合理演算法與高品質數據:一個合理的演算法結合高品質的數據,表現通常會勝過使用複雜演算法但數據品質差的系統。

3. 考慮部署限制

建立 baseline 模型後,除了考慮模型的表現和可行性以外,也要考慮到模型的部署限制。舉例來說,模型可能需要部署在雲端、本地、用戶的電腦或手機上,因此必須考量運算效能和模型大小等因素。

4. 錯誤分析(Error Analysis)

分析模型在哪類的數據表現比較差,哪類數據的表現較好。錯誤分析有助於找出模型表現較差的地方,並且要特別關注對於稀有類別和偏斜數據分佈的處理方式。

  • 稀有類別(Rare Classes):這些類別數據較少,模型往往表現不佳,因此需要特別分析這些樣本的準確性。
  • 偏斜數據分佈(Skewed Data Distribution):當大部分數據屬於同一類別時(如 99% 的數據為負樣本),需要確保模型能在不平衡的數據集上表現良好。

另外,要瞭解模型在資料集上的表現,可以建立一個如下圖的分析表格,針對模型發生的錯誤進行審核。這個表格呈現一個語音辨識模型發生的錯誤案例,陳列每個數據的 label(真實標籤)、prediction(模型的預測)、以及是否存在環境噪音(例如汽車聲、人物聲)。這樣可以有效分析哪些因素導致了錯誤的預測,進而改善模型的效能。

https://ithelp.ithome.com.tw/upload/images/20240920/20152325LVT1eYyBEp.png
圖片來源:Machine Learning in Production | DeepLearning.AI

5. 反覆修正與小規模 overfit 測試

如果模型表現不佳,可能需要重新蒐集數據、改善數據品質、重新選擇模型,或是調整模型參數。

  • 小規模 overfit 測試:在訓練大量資料之前,先嘗試讓模型在小型數據集上過擬合(overfit),以確保模型程式運作正常。

模型開發中的挑戰

在開發模型時,根據訓練表現和訓練過程的階段,會遇到不同的挑戰。

第一階段:訓練資料集表現良好

首先,模型需要先在訓練資料集上表現良好,才能進一步評估其在開發資料集和測試資料集上的表現。

第二階段:開發/測試資料集表現

當模型在訓練資料集上表現良好後,才能開始對開發資料集和測試資料集進行表現評估。

第三階段:達成商業指標

最後,如同 [Day 4] ML Project Lifecycle 介紹 - Step 1. 定義商業指標(Define the business goal)提過的,一個優秀的模型不僅要滿足機器學習的指標,也要能夠達成達成商業目標。就算能夠模型將模型訓練到誤差極小,也不代表模型能夠解決商業需求中的關鍵問題。

為什麼僅關注平均誤差是不夠的?

在訓練模型時,我們都會希望模型在資料集上的誤差越小越好。然而,即便誤差極小,有時卻無法反映模型在一些關鍵場景下的表現,而這些場景可能對於商業利益來說是非常重要的。

1. 關鍵案例的重要

在某些應用情境下,並非所有案例的重要性相同。例如:

  • 資訊查詢(Informational Queries):用戶搜尋資訊時,結果不一定需要完全匹配,容許一定的誤差,只要他們能夠在頁面上找到自己想看的內容即可。
  • 導航查詢(Navigational Queries):這個指的是用戶尋找特定網站(如 YouTube 或 Reddit)時,若模型無法精準配對用戶的需求,可能嚴重影響體驗。這類情境比資訊查詢重要得多。

如果只是將所有場景的誤差都平均計算,可能會忽視這些關鍵案例的重要性,導致模型在關鍵應用場景中表現不佳。

2. 特定資料子集的表現

模型在特定資料子集(如不同性別、國籍等)上是否公正,這個會直接關係到模型的公平性和商業應用的成敗。舉例來說,在貸款審批模型中,模型需要避免對某些國籍、性別或語言有偏見。同理,在產品推薦系統中,需要謹慎處理不同類型的用戶、零售商和產品,以確保公平性。

以 Netflix match cutting 為例

Netflix 在運用機器學習技術來優化 Match Cutting 時,發現了兩個主要挑戰。
首先,儘管模型在初步測試中表現良好,但當應用於大規模數據時,擴展性不足,導致處理速度緩慢,無法滿足需求。
其次,雖然模型成功識別了 action matching 的片段,但結果與預期不符,所找到的匹配片段未能實現他們理想中的視覺效果。因此,Netflix 必須重新考慮模型的訓練方法和數據處理流程,以提升效能並達到預期的效果,才能符合商業利益。


今天,我們介紹一些在訓練模型時需要特別考量之處,在業界實作機器學習專案時,除了單純將一個模型的表現提升,我們更要同時考量商業利益以及實際業務場景的運用方式,達到最終的商業目標!


謝謝讀到最後的你,如果喜歡這系列,別忘了按下喜歡和訂閱,才不會錯過最新更新。
如果有任何問題想跟我聊聊,或是想看我分享的其他內容,也歡迎到我的 Instagram(@data.scientist.min) 逛逛!
我們明天見!


上一篇
[Day 5] ML Project Lifecycle 介紹 - Step 2. 蒐集和準備資料(Collect and Prepare Data)
下一篇
[Day 7] Step 4. 將模型整合到應用程式中(Integrate with Application):Data Drift vs. Concept Drift、常見的部署模式
系列文
從點子構想到部署上線:機器學習專案的一生13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言